package com.laamella.syntherface.synths.alesis.micron.model;

import com.laamella.syntherface.synths.midi.MidiInterface;
import com.laamella.syntherface.synths.models.NrpnParameterModel;
import com.laamella.syntherface.synths.models.ParameterType;

public final class SampleAndHold {
	public final NrpnParameterModel tempoSync;
	public final NrpnParameterModel rateFree;
	public final NrpnParameterModel rateSynced;
	public final NrpnParameterModel reset;
	public final NrpnParameterModel input;
	public final NrpnParameterModel smoothing;

	public static final ParameterType InputType=new ParameterType.List("note-on velocity, release velocity, key track, m1 wheel, m2 wheel,pitch wheel, sustain pedal, expression pedal, amp env level,filter env level, pitch/mod env level, lfo 1 sine, lfo 1 cosine,lfo 1 triangle, lfo 1 cos-triangle, lfo 1 saw, lfo 1 cos-saw,lfo 1 square, lfo 1 cos-square, lfo 2 sine, lfo 2 cosine, lfo 2 triangle,lfo 2 cos-triangle, lfo 2 saw, lfo 2 cos-saw, lfo 2 square,lfo 2 cos-square, voice random, global random, portamento level,portamento effect, tracking generator, step track, midi channel pressure,midi poly aftertouch, midi cc 1, midi cc 2, midi cc 3, midi cc 4,midi cc 7, midi cc 8, midi cc 9, midi cc 10, midi cc 11, midi cc 12,midi cc 13, midi cc 14, midi cc 15, midi cc 16, midi cc 17, midi cc 18,midi cc 19, midi cc 20, midi cc 21, midi cc 22, midi cc 23, midi cc 24,midi cc 25, midi cc 26, midi cc 27, midi cc 28, midi cc 29, midi cc 30,midi cc 31, midi cc 66, midi cc 67, midi cc 68, midi cc 69, midi cc 70,midi cc 71, midi cc 72, midi cc 73, midi cc 74, midi cc 75, midi cc 76,midi cc 77, midi cc 78, midi cc 79, midi cc 80, midi cc 81, midi cc 82,midi cc 83, midi cc 84, midi cc 85, midi cc 86, midi cc 87, midi cc 88,midi cc 89, midi cc 90, midi cc 91, midi cc 92, midi cc 93, midi cc 94,midi cc 95, midi cc 102, midi cc 103, midi cc 104, midi cc 105,midi cc 106, midi cc 107, midi cc 108, midi cc 109, midi cc 110,midi cc 111, midi cc 112, midi cc 113, midi cc 114, midi cc 115,midi cc 116, midi cc 117, midi cc 118, midi cc 119, key track extreme");

	SampleAndHold(MidiInterface midiInterface) {
		tempoSync=new NrpnParameterModel("S&H tempo sync", midiInterface, 113, ParameterType.OnOff);
		rateFree=new NrpnParameterModel("S&H rate(free)", midiInterface, 114, Lfo.FreeRateType);
		rateSynced=new NrpnParameterModel("S&H rate(synced)", midiInterface, 161, new ParameterType.List("#   x 16, x 12, x 10 2/3, x 8, x 6, x 5 1/3, x 4, x 3, x 2 2/3, x 2, x 1 1/2, x 1 1/3, x 1, x 3/4, x 2/3, x 1/2, x 3/8, x 1/3, x 1/4, x 3/16, x 1/6, x 1/8, x 3/32, x 1/12, x 1/16"));
		reset=new NrpnParameterModel("S&H reset", midiInterface, 115, new ParameterType.List("mono, poly, key mono, key poly, arp mono"));
		input=new NrpnParameterModel("S&H input", midiInterface, 116);
		smoothing=new NrpnParameterModel("S&H smoothing", midiInterface, 117, ParameterType.Percentage);
	}
}